# -*- coding: utf-8 -*-
#   公共方法函数
# @Time    ： 2023/1/10  9:52
# @Auther  ： 徐良
# File     :  funPublic.py
import re
from decimal import Decimal
import datetime
from PySide6.QtCore import QDate, QTime, QDateTime, Qt


def timeDifHour(beginTime, endTime):
    """
    计算两个时间点之间的差
    :param beginTime: 起始时间，格式 hh:mm  小时，分钟，24小时制  字符串
    :param endTime:
    :return: list  [0] 小时，[1]分钟  int类型
    """
    '''计算两个时间点之间的分钟数'''
    # 处理格式,加上秒位
    bstr = beginTime + ':00:000'
    estr = endTime + ':00:000'
    b = bstr.split(':')
    e = estr.split(':')
    bTime = datetime.time(int(b[0]), int(b[1]), int(b[2]), int(b[3]))
    eTime = datetime.time(int(e[0]), int(e[1]), int(e[2]), int(e[3]))

    beginHour = bTime.hour
    beginMinute = bTime.minute
    endHour = eTime.hour
    endMinute = eTime.minute
    hd = endHour - beginHour
    md = endMinute - beginMinute
    if hd <= 0 and md < 0:
        ret = [0, 0]
        return ret
    if md < 0:
        md = md + 60
        hd = hd - 1
    ret = [hd, md]
    return ret


def getSplitMinussign(s, n):
    """
    取分割符为‘-’的第n个字符串 减号
    :param s: 字符串
    :param n: 第n个，从1开始
    :return: str
    """
    strlist = s.split('-')
    ret = strlist[n - 1]
    return ret


def getSplitUnderline(s, n):
    """
    取分割符为‘_’,下划线的第n个字符串 下划线
    :param s: 字符串
    :param n: 第n个，从1开始
    :return: str
    """
    strlist = s.split('_')
    ret = strlist[n - 1]
    return ret


def decimalToStr(dec):
    """
    转decimal
    :param dec:
    :return: str
    """
    ret = str(Decimal(dec))
    return ret


def strToint(ss):
    try:
        int(ss)
        return int(ss)
    except ValueError:  # 报类型错误，说明不是整型的
        try:
            float(ss)  # 用这个来验证，是不是浮点字符串
            return int(float(ss))
        except ValueError:  # 如果报错，说明即不是浮点，也不是int字符串。   是一个真正的字符串
            return 0


def get16Code(sText):
    """
    字符串转16进制
    :param sText: 字符串
    :return: str (16进制，空格间隔)
    """
    # 将字符串按字节编码为十六进制表示，并添加空格
    hex_str = ' '.join(f'{byte:02X}' for byte in sText.encode('utf-8'))
    return hex_str

def getStrFrom16(sCode):
    """
    十六进制字节转字符串
    :param sCode: 十六进制字符串
    :return:
    """
    # 将十六进制字符串分割成十六进制值
    hex_values = sCode.split()
    # 将十六进制值转换为字节
    byte_data = bytes.fromhex(''.join(hex_values))
    # 解码字节为字符串
    decoded_str = byte_data.decode('utf-8')

    # 打印结果
    # print(f"十六进制字符串 '{hex_str}' 转换为字符串: {decoded_str}")
    return decoded_str
